Computer networks are formed by a collection of devices operating according to a set of various protocols. Typical computer networks are formed by routers that each executes routing protocols to discover routes between various endpoints, and switches that execute switching protocols, such as the spanning tree protocol (STP). In accordance with the routing protocols, routers exchange information regarding routes discovered by the routers. In this manner, each router typically performs its own determination as to the best routes to use to cause traffic to traverse the network.
Recently, software defined networks have been developed as a way to deploy and operate networks and develop new networking applications. In general, software defined networks involve the use of a standalone controller that performs the control functionality for a set of network devices. As an example of software defined networking, in the case of routing, rather than routers performing individual analyses to determine routes through the network, the controller can determine the routes and program other devices in the network to behave according to the determinations made by the controller. Different protocols may be used to implement software defined networking, including open protocols like OpenFlow, and proprietary protocols from network vendors. OpenFlow is described in McKeown et al., “OpenFlow: Enabling Innovation in Campus Networks,” http://www.openflow.org//documents/openflow-wp-latest.pdf, which is hereby incorporated by reference in its entirety.